package com.hspedu.throws_;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * @author DL5O
 * @version 1.0
 */
public class ThrowsDetail {
    public static void main(String[] args) {

    }

    public void f2()/* throws ArithmeticException*/{
        int n1 = 10;
        int n2 =  0;
        double res = n1 /n2;
    }

    public static void f1() throws FileNotFoundException{
        //调用f3();
        //1.这里的f3();抛出了一个编译异常
        //2.即这时，就要求f1() 必须处理这个编译异常
        // 解决方法：1.throws 异常
        //         2.try catch异常
        f3();//Unhandled exception: java.io.FileNotFoundException

    }

    public static void f3() throws FileNotFoundException {
        FileInputStream fis = new FileInputStream("d://a.txt");
    }

    public static void f4(){
        //1.在f4()中调用f5() 是ok的
        //2.原因是f5()抛出的运行异常
        //3.而java中，并不要求程序员显示处理运行异常，因为有默认处理机制
        f5();
    }

    public static void f5() throws ArithmeticException{

    }
}

class Father{
    public void method() throws RuntimeException{

    }
}

class Son extends Father{
    //3.子类重写父类的方法时，对抛出异常的规定:
    //    子类重写的方法，所抛出的异常类型要么和父类抛出的异常一致，
    //    要么为父类抛出的异常类型的子类型
    //4.使用throws，如果有方法 try-catch，就相当于处理异常，就可不必throws
    @Override
    public void method() throws NullPointerException {
    }
}